%include	'Macros.inc'
;	����������� ��������� ������� ���� ��������� � "�����" ���������� ��������� �� �����
;	---------------------------------------------------
;	����� ���������: int 80h	
;
cr	equ	0dh
lf	equ	0ah
	absolute	2ch		;��������� ���� ����� �����-�������� 2Ch
Blocokr	resw	1
	absolute	80h		;��������� ���� ����� �����-�������� 80h
Lparam	resb	1			;����� ������ �������
Param	resb	1			;������ ���� ������
	segment	code	
	org	100h
Start:	jmp	Init
Namefile1 times	81	db	0	;��� ����� 1
Namefile2 times	81	db	0	;��� ����� 2
Bufer	times	512	db	0	;����� ��� �����������
Lognum1	dw	0			;���������� ����� ����� 1
Lognum2	dw	0			;���������� ����� ����� 2
Begin	sti
	mov	ax,cs
	mov	ds,ax
;��������� ����� ����� 1
	xor	ax,ax 
	xor	di,di
	xor	si,si
.Next1:	mov	al,[es:Param+di]        ;���������� ��� �����
	mov	[Namefile1+si],al	; � Namefile
	inc	di
	inc	si
	cmp	al,0
	je	.M1
	jmp	.Next1
;��������� ����� ����� 2
.M1:	xor	si,si
.Next2:	mov	al,[es:Param+di]        ;���������� ��� �����
	mov	[Namefile2+si],al	; � Namefile
	inc	di
	inc	si
	cmp	al,0
	je	.M2
	jmp	.Next2
;�������� ����� 1
.M2:	mov	ah,3dh			;��������
	mov	dx,Namefile1		; �����
	mov	al,1			; ��
	int	21h			; ������
	jnc	.M3			;���� �������
	Out_str	ErrorOpenFile1		;��������� �� ������ �������� �����
	call	Send_crlf		;������� ������
	call	Read_byte		;���� �������
	jmp	.Exit			;�����
.M3:    mov	[Lognum1],ax		;���������� �����. ������ �����
;�������� ����� 2
	mov	ah,3dh			;��������
	mov	dx,Namefile2		; �����
	mov	al,0			; ��
	int	21h			; ������
	jnc	.M4			;���� �������
	Out_str	ErrorOpenFile2		;��������� �� ������ �������� �����
	call	Send_crlf		;������� ������
	call	Read_byte		;���� �������
	jmp	.Exit			;�����
.M4:    mov	[Lognum2],ax		;���������� �����. ������ �����
;��������� ��������� �� ����� ����� 1
	mov	ah,42h			;������� ��������� ��������� �����
	mov	bx,[Lognum1]		;BX <- �����. ����� �����
	mov	al,2			;AL <- 2 - ����������� ������������ �����
	xor	cx,cx			;�������� ����������� (������� �����)
	xor	dx,dx		        ; � ������ (������� �����)
	int	21h			;�����������
	jnc	.M5			;���� �������
	Out_str	ErrorReadFile		;��������� �� ������ ������
	call	Send_crlf		;������� ������
	call	Read_byte		;���� �������
	jmp	.Exit			;�����
 ;����������� �����
.M5:	mov	ah,3fh			;������� ������ �� �����
	mov	bx,[Lognum2]		;BX <- �����. ����� ��������� �����
	mov	cx,512			;CX <- ����� �������� ����
	mov	dx,Bufer		;DX <- �����-�������� ������
	int	21h			;������ �� ����� � �����
	jnc	.M6			;���� �������
	Out_str	ErrorReadFile		;����� ��������� �� ������ ������
	call	Send_crlf		;������� ������
	call	Read_byte		;���� �������
	jmp	.Exit			;�����
.M6:	mov	bx,[Lognum1]		;BX <- �����. ����� ����� �����
	mov	cx,ax			;CX <- ����� ������������ ������
	mov	ah,40h			;������� ������ � ����
	mov	dx,Bufer		;DX <- �����-�������� ������
	int	21h			;������ �� ������ � ����
	jnc	.M7			;���� �������
	Out_str	ErrorWriteFile		;����� ��������� �� ������ ������
	call	Send_crlf		;������� ������
	call	Read_byte		;���� �������
	jmp	.Exit			;�����
.M7:	cmp	ax,512			;����� �����?
	jz	.M5			;���� ���
	Out_str	CopyCompleted		;����� ��������� � ���������� �����������
.Exit:	iret
ErrorOpenFile1	db	'Error open file 1 $'
ErrorOpenFile2	db	'Error open file 2 $'
ErrorReadFile	db	'Error read file $'
ErrorWriteFile	db	'Error write file $'
CopyCompleted	db	'Copy completed $'
;
;	������� ������ ������
;	---------------------
;
Send_crlf:
	push	ax
	push	dx
	mov	ah,2 		;������� ������
	mov	dl,cr		;��������� ������
	int	21h		;����� �������
	mov	dl,lf
	int	21h		; -"-
	pop	dx
	pop	ax
	ret
;
;	������� ������
;	--------------
;
Clear_screen:
	push	ax
	push	bx
	push	cx
	push	dx
	xor	al,al		;�������� ��� ����
	xor	cx,cx		;������� ����� ���� � (0,0)
	mov	dh,49		;������ ������ ������ - 49
	mov	dl,79		;������ ������� � 79 �������
	mov	bh,7		;��������� ���������� ��������
	mov	ah,6		;��������
	int	10h		; ����
	xor	dl,dl		;������� ����������
	xor	dh,dh		; �������
	xor	bx,bx		;������� �������������
	xor	al,al		;���������
	mov	ah,2		; �������
	int	10h		; � �������� �����
	pop	dx
	pop	cx
	pop	bx
	pop	ax
	ret
;
;	��������� ��� ������� � ����������
;	----------------------------------
; �����: AL - ��� ASCII ������� (0 - ����������� ������)
;	 AH - ����-��� �������
;
Read_byte:
	mov	ah,0		;���� �������
	int	16h		; ��� ���
	ret
Init:	mov	ax,2580h			;������ ���������� ������ �����������
        mov	dx,Begin			; � ������ ����������
	int	21h				; � ������� 80h
	mov	ah,49h				;������������ ������� ������,
	mov	es,[Blocokr]			; ����������
	int	21h				; ������ ���������
	mov	dx,Init				;������� � DOS, ���������
	int	27h                             ; �����������
